
//根据excel的数据  依据车牌去重  在5分钟内重复识别的只记录一次
const fs = require('fs');
const xlsx = require('xlsx');

// 读取Excel文件
let workbook = xlsx.readFile('./static/车牌识别记录.xls');

// 遍历每个工作表
workbook.SheetNames.forEach(sheetName => {
  let sheet = workbook.Sheets[sheetName];

  // 将工作表转换为JSON对象
  let data = xlsx.utils.sheet_to_json(sheet);

  // 使用一个Set来存储已经记录过的车牌
  let uniquePlates = new Map();
let a = 0
 // 遍历Excel数据
let newData = data.filter(record => {
    // 如果这个车牌已经被记录过，且距离上次记录的时间不到5分钟，就跳过
    // console.log(record['识别时间'] , uniquePlates.get(record['车牌号']))
    if (uniquePlates.has(record['车牌号']) && Math.abs((new Date(record['识别时间']) - new Date(uniquePlates.get(record['车牌号']))) / 1000 / 60) < 30) {
      a++
        console.log(record['车牌号'], record['识别时间'], Math.abs((new Date(record['识别时间']) - new Date(uniquePlates.get(record['车牌号']))) / 1000 / 60),'重复车牌')
      return false;
    }
  
    // 否则，记录这个车牌的时间
    uniquePlates.set(record['车牌号'], record['识别时间']);
  
    // 然后返回true，表示这条记录应该被保留
    return true;
  });

  // 创建一个新的工作簿
  let newWorkbook = xlsx.utils.book_new();

  // 将新的数据添加到新的工作表
  let newSheet = xlsx.utils.json_to_sheet(newData);
  xlsx.utils.book_append_sheet(newWorkbook, newSheet, sheetName);

  // 将新的工作簿写入新的Excel文件
  xlsx.writeFile(newWorkbook, `new_excel_file_${sheetName}.xlsx`);
  console.log('完成')
  console.log( a, ' a')
});